package com.xrh.xdemo.service.mapper.fillHandler;

import java.util.Date;

import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;


/**
 * @function 在插入的或更新的时候自动填充字段值
 * @author 肖荣辉
 * @date 2021年4月25日
*/
@Component
public class FillHandler  implements MetaObjectHandler {
	

	//在执行mybatisPlus的insert()时，为我们自动给某些字段填充值，这样的话，我们就不需要手动给insert()里的实体类赋值了
   @Override
   public void insertFill(MetaObject metaObject) {
	   	
	   	//更新版本号默认填充0
    	this.setFieldValByName("updateVersion" , 0 , metaObject);
    	
    	this.setFieldValByName("createTime" , new Date() , metaObject);
    	
    	this.setFieldValByName("createUserId" , getOperateId(), metaObject);
    	
    	this.setFieldValByName("createUserName" , getOperateName(), metaObject);
    	
    	this.setFieldValByName("createUserAccount" , getOperateAccount(), metaObject);
		
    	//插入时把账号信息和时间也带进去,方便增量查询
    	updateFill(metaObject);

   }

   //在执行mybatisPlus的update()时，为我们自动给某些字段填充值，这样的话，我们就不需要手动给update()里的实体类赋值了
   @Override
   public void updateFill(MetaObject metaObject) {
   		
	    this.setFieldValByName("updateUserId" , getOperateId() , metaObject);
   		
     	this.setFieldValByName("updateUserName" , getOperateName(), metaObject);
		
		this.setFieldValByName("updateTime" , new Date() , metaObject);
	
   	    this.setFieldValByName("updateUserAccount" , getOperateAccount(), metaObject);
   }
   
   //获取操作人ID
   public Long getOperateId() {
	   
	   
       return -1L;
   }
   
   //获取操作人账号
   public String getOperateAccount() {
	   
	   return "";
  }
   
   
   //获取操作人姓名
   public String getOperateName() {
	   
	   return "";
  }
   
}
